namespace designpatternsplus.contracts
{
    using System;

    /// <summary>
    /// 
    /// </summary>
    public interface IMarketStaffMember {
        /// <summary>
        /// Gets the job level.
        /// </summary>
        /// <value>The job level.</value>
        JobLevel JobLevel { get; set; }

        ///<summary>
        ///</summary>
        string LastName { get;  }

        /// <summary>
        /// Gets or sets the first name.
        /// </summary>
        /// <value>The first name.</value>
        string FirstName { get; }

        /// <summary>
        /// Gets the employee ID.
        /// </summary>
        /// <value>The employee ID.</value>
        long EmployeeID { get; }

        /// <summary>
        /// Asks the specified resolve question please.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="resolveQuestionPlease">The resolve question please.</param>
        /// <returns></returns>
        T AskQuestion<T>(Func<T> resolveQuestionPlease);
    }
}